/**
 * 发送Get异步请求方式
 * @param {String} url 请求地址
 * @param {String} params  请求参数
 * @param {Function} callback  回调函数
 * @param {Object} headers 请求头
 * @param {String} dataType 后端返回的数据类型
 */

function get(url, params, callback, headers = {}, dataType) {
    // 一.创建xhr对象
    const xhr = new XMLHttpRequest
    // 二.监控请求状态
    xhr.onreadystatechange = () => {
        // 判断是否拿到后端的数据
        if (xhr.readyState === 4) {
            // 判断数据状态
            if (xhr.status === 200) {
                //获取数据
                let res = xhr.responseText
                if (dataType === 'json') res = JSON.parse(res)
                callback(res)
            } else {
                console.log('状态错误', xhr.status);
            }
        }
    }
    // 遍历参数,参数是对象
    let temp = []
    for (let key in params) {
        // 把参数中的值 push到空数组中 键=值得形式
        temp.push(`${key}=${params[key]}`)
    }
    
    // 三.设置请求方式,请求地址
    xhr.open('get', `${url}?${temp.join('&')}`)

    // 遍历请求头
    for (let key in headers) {
        xhr.setRequestHeader(key, headers[key])
    }
    //四.发送请求
    xhr.send(null)

}

/**
 * 发送Post异步请求方式
 * @param {String} url  请求地址
 * @param {String} params 请求参数
 * @param {Function} callback  回调函数
 * @param {Object} headers  请求头
 * @param {String} dataType  数据类型
 */


function post(url, params, callback, headers = {}, dataType = 'json') {
    // 一.创建xhr对象
    const xhr = new XMLHttpRequest
    // 二.监控请求状态
    xhr.onreadystatechange = () => {
        // 判断是否拿到后端的数据
        if (xhr.readyState === 4) {
            // 判断数据状态
            if (xhr.status === 200) {
                //获取数据
                let res = xhr.responseText
                if (dataType === 'json') res = JSON.parse(res)
                callback(res)
            } else {
                console.log('状态错误', xhr.status);
            }
        }
    }
    // 遍历参数,参数是对象
    let temp = []
    for (let key in params) {
        // 把参数中的值 push到空数组中 键=值得形式
        temp.push(`${key}=${params[key]}`)
    }

    // 三.设置请求方式,请求地址
    xhr.open('post', url)
    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')

    // 遍历请求头
    for (let key in headers) {
        xhr.setRequestHeader(key, headers[key])
    }

    //四.发送请求
   xhr.send(temp.join('&'))
}

